﻿Public Class ValidacionesEspecialesFacturacionSGSS
    ''' <summary>
    ''' Funcion que valida si un Cliente por medio de su empresa posee restricciones de hora al momento de facturar
    ''' </summary>
    ''' <param name="IdEmpresa">Correspone al id de la empresa a la cual pertenece el cliente al que se le está facturando</param>
    ''' <param name="IdTipoPago">Corresponde al ID del tipo de pago que se está restringiendo</param>
    ''' <returns>Retorna True si el Cliente puede facturar sin restricciones y False si el Cliente entra en alguna restriccion</returns>
    ''' <remarks></remarks>
    Public Shared Function ValidarHorarioEspecialFacturacion(ByVal IdEmpresa As Integer, ByVal IdTipoPago As Integer) As Boolean
        ''Variable que captura de la base de datos si a la empresa a la que pertenece el Cliente le permite horas de facturación específicas
        Dim facturarHoraEspecialDB As Boolean = ConexionSGS.EjecutarQueryScalar(String.Format("SELECT facturarhoraespecial FROM EMPRESAS WHERE IDEMPRESA = {0} and facturarhoraespecial is not null;", IdEmpresa))
        ''Variable que obtiene el tipo de pago al que se le aplica la validación
        Dim tipoPagoPermiteDB As Integer = ConexionSGS.EjecutarQueryScalar(String.Format("SELECT idtipopago FROM EMPRESAS WHERE IDEMPRESA = {0} and idtipopago is not null;", IdEmpresa))
        ''Valida que la empresa tenga horario especial de facturacion y a la vez que concuerde el id del tipo de pago
        If facturarHoraEspecialDB = True And IdTipoPago = tipoPagoPermiteDB Then
            Dim horaInicioDB As TimeSpan = ConexionSGS.EjecutarQueryScalar(String.Format("SELECT horainicio FROM EMPRESAS WHERE IDEMPRESA = {0};", IdEmpresa))
            Dim horaFinalDB As TimeSpan = ConexionSGS.EjecutarQueryScalar(String.Format("SELECT horafinal FROM EMPRESAS WHERE IDEMPRESA = {0};", IdEmpresa))
            Dim horaServer As TimeSpan = ConexionSGS.EjecutarQueryScalar("SELECT CURRENT_TIME;")
            ''Valida que el Cliente esté facturando en el tiempo estipulado
            If horaServer >= horaInicioDB And horaServer <= horaFinalDB Then
                Return True
            Else
                System.Windows.Forms.MessageBox.Show("El Cliente no puede facturar con el tipo de pago seleccionado debido a restricciones de horarios establecidos por la Empresa a la que pertenece.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Return False
            End If
        End If
        Return True
    End Function
End Class
